package com.fay.convert;

import com.aspose.words.SaveFormat;
import com.fay.convert.utils.HtmlConvertUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.ByteArrayOutputStream;
import java.io.File;

/**
 * 文件转换工具类
 * 注：HTML转文档支持在线图片，本地图片不支持显示
 *
 * @author fay
 * @date 2021-06-03
 */
@Slf4j
public class FileConvertUtil {

    /**
     * HTML转Word
     *
     * @param htmlBytes html字节码
     * @return word文件字节
     */
    public static byte[] html2Word(byte[] htmlBytes) {
        return HtmlConvertUtil.htmlConvert(htmlBytes, SaveFormat.DOCX);
    }

    /**
     * HTML转Word
     *
     * @param html html内容
     * @return word文件字节
     */
    public static byte[] html2Word(String html) {
        // 表格处理
        String replaceHtml = html.replaceAll("<table.*>", "<table style='border:1px;width:auto;'>");
        return HtmlConvertUtil.htmlConvert(replaceHtml.getBytes(), SaveFormat.DOCX);
    }

    /**
     * HTML转Word
     *
     * @param html html内容
     * @param wordFilePath 转换后的word文件路径
     * @return word文件数据
     */
    public static File html2Word(String html, String wordFilePath) {
        // 表格处理
        String replaceHtml = html.replaceAll("<table.*>", "<table style='border:1px;width:auto;'>");
        return HtmlConvertUtil.htmlConvert(replaceHtml, wordFilePath, SaveFormat.DOCX);
    }

    /**
     * HTML转PDF
     *
     * @param htmlBytes html字节码
     * @return pdf文件字节码
     */
    public static byte[] html2Pdf(byte[] htmlBytes) {
        return HtmlConvertUtil.htmlConvert(htmlBytes, SaveFormat.PDF);
    }

    /**
     * HTML转PDF
     *
     * @param html html内容
     * @param pdfFilePath 转换后的pdf文件路径
     * @return pdf文件数据
     */
    public static File html2Pdf(String html, String pdfFilePath) {
        // 表格处理
        String replaceHtml = html.replaceAll("<table.*>", "<table style='border:1px;width:auto;'>");
        return HtmlConvertUtil.htmlConvert(replaceHtml, pdfFilePath, SaveFormat.PDF);
    }

    /**
     * HTML转PDF
     *
     * @param header 追加的头部内容
     * @param html html内容
     * @param footer 追加的尾部内容
     * @return 生成的pdf文件数据
     */
    public static ByteArrayOutputStream html2Pdf(String header, String html, String footer) {
        // 表格处理
        String replaceHtml = html.replaceAll("<table.*>", "<table style='border:1px;width:auto;'>");
        return HtmlConvertUtil.htmlConvert(header, replaceHtml, footer, SaveFormat.PDF);
    }

}
